#!/usr/bin/python
# -*- coding: UTF-8 -*-

from kpautos.engine.case import Case
from kptest.config.enum import DeviceType, HostType, DeviceUtility


class BMC_SSH_011(Case):
    """
        Name:
            BMC_SSH_011
        Label:
            风扇&散热命令
        PreCondition:
            1、BMC正常运行
        TestStep:
            1.设置风扇模式为手动：ipmcset -d fanmode -v 1 180
            2.设置风扇运行速度：ipmcset -d fanlevel -v 30 5，有结果A)
            3.查询风扇工作状态：ipmcget -d faninfo，有结果B）
            4.设置风扇运行模式为自动：ipmcset -d fanmode -v 0
        ExpectedResult:
            A）风扇工作状态设置正确
            B）风扇工作状态查询正确
        Parameters:

        Remark:

    """

    # 测试执行前配置等准备操作
    def pre_test_case(self):
        self.device_dut = self.resource.get_device(device_type=DeviceType.Server, utility=DeviceUtility.DUT)
        self.bmc_host = self.device_dut.get_host(host_type=HostType.BMC)


    # 测试步骤
    def procedure(self):
        self.log_step("1、设置风扇模式为手动")
        resp = self.bmc_host.run({"command": ["ipmcset -d fanmode -v 1 180"], "timeout": 3})
        self.log_info(resp)
        self.log_step("2、设置风扇运行速度")
        resp = self.bmc_host.run({"command": ["ipmcset -d fanlevel -v 30 2"], "timeout": 3})
        self.log_info(resp)
        if "successfully" not in resp['stdout']:
            self.assertIsNotNone(None, f"设置风扇2失败：{resp['stdout']}")
        self.log_step("3、查询风扇工作状态")
        resp = self.bmc_host.run({"command": ["ipmcget -d faninfo"], "timeout": 3})
        self.log_info(resp)
        if "Fan2: 30" not in resp['stdout']:
            self.assertIsNotNone(None, f"设置风扇2失败：{resp['stdout']}")
        self.log_step("3、设置风扇运行模式为自动")
        resp = self.bmc_host.run({"command": ["ipmcset -d fanmode -v 0"], "timeout": 3})
        self.log_info(resp)


    # 测试结束后恢复环境
    def post_test_case(self):
        pass